function A207()
format long;
% 常用的测量结果及其不确定度的评估指标
% 平均类包括均值、几何均值、调和均值，标准差、平均误差、Peter法、极限误差、最大残差法等；
% 排序类包括中位值、中点值、三点均值、L-G估计，极差法、中位绝对差、半极差、四分位离差、十六分位离差、四点L估计等；
% 截尾类包括截尾均值、平尾均值，截尾标准差、平尾标准差；
% 频数类包括众值，或然误差等。

% 将本地excel文件A009_data.xlsx导入数据
A=xlsread('A207_data.xlsx');

% 计算数据个数
B = size(A);
M = B(1);        % 个数
x = 1: M;       % 为横坐标赋值

% 显示输入的原始数据
subplot(3,3,1);
plot(x, A, 'rs');
ylim([min(A) max(A)]);
legend('原始输入数据', 'FontSize', 10); 
title('原始数据')

% 显示输入原始数据的箱型图
subplot(3,3,2);
boxplot(A);
xlim([0 4])
ylim([min(A) max(A)]); 
title('原始数据的箱型图')
str1 = {['样本数据中的最小值：', num2str(min(A))]};                           % 计算样本数据中的最小值
str2 = {['样本数据中的最大值：', num2str(max(A))]};                           % 计算样本数据中的最大值
str3 = {['样本数据中的中位数值：', num2str(median(A))]};                      % 计算样本数据中的中位值
str4 = {['样本数据中的0.6分位数值：', num2str(quantile((A), 0.6))]};          % 计算样本数据中的分位数值
str5 = {['样本数据中的四分位差：', num2str(iqr(A))]};                         % 计算样本数据中的四分位差
str6 = {['样本数据的分组汇总统计量：', num2str(grpstats(A))]};                % 计算样本数据的分组汇总统计量
text(1.2, median(A), [str1 str2 str3 str4 str5 str6], 'FontSize', 10);       % 显示均值及其标准差

% 显示输入数据的概率密度分布图
subplot(3, 3, 3);
[counts, centers]=hist(A,M);          % 计算输入数据的概率密度分布
counts = counts/M;                    % 标准化输入数据的概率密度分布
CUMcounts = cumsum(counts);           % 计算输入数据的概率分布
[count20s, center20s]=hist(A,20);     % 按20个分隔计算输入数据的概率密度分布
count20s=count20s/M;
plot(center20s, count20s, 'rs', centers, CUMcounts, 'b-'); 
legend('输入数据的概率密度分布图', '输入数据的概率分布图', 'FontSize', 10);
title('概率密度分布与概率分布图')

% 平均类（均值、几何均值和调和均值）
AveA = mean(A);                       % 平均值
StandardError=std(A,0);               % 标准差
% 计算几何均值
rootA = 1; M;                         % 初始化rootA
for i = 1: M 
    rootA(i) = A(i)^(1/M);
end
geoAveA = prod(rootA);                 % 几何均值
% 计算基于几何均值的均方差根
geoAveError = sqrt(((A-geoAveA)'*(A-geoAveA))/(M-1));
% 计算调和均值
harmA = A;                             % 初始化harmA
for i =1 : M
    harmA(i) = 1/A(i);
end
harmMean = 1/mean(harmA);
% 计算基于调和均值的均方差根
harmMeanError = sqrt(((A-harmMean)'*(A-harmMean))/(M-1));
% 显示平均类的均值、几何均值和调和均值及其均方差根
subplot(3, 3, 4);
errorbar([1 2 3], [AveA geoAveA harmMean], [StandardError geoAveError harmMeanError], 'ro');
str1={['均值：'], [num2str(AveA)], ['标准差：'], [num2str(StandardError)]};
text(1, AveA, str1, 'FontSize', 10);                  % 显示均值及其标准差
str2={['几何均值：'], [num2str(geoAveA)], ['均方差根：'], [num2str(geoAveError)]};
text(2, geoAveA, str2, 'FontSize', 10);               % 显示几何均值及其均方差根
str3={['调和均值：'], [num2str(harmMean)], ['均方差根：'], [num2str(harmMeanError)]};
text(3, harmMean, str3, 'FontSize', 10);              % 显示调和均值及其均方差根
xlim([1, 4])
title('平均类（均值、几何均值和调和均值）')

% 平均类（标准差、平均误差、Peter法、极限误差、最大残差法）
% 计算平均误差
meanError = mae(A-AveA);
% 计算Peter法的误差
PeterError = 1.253*sqrt(M/(M-1))*meanError;
% 计算极限误差，置信因子k=3，置信度为99.7%
limitError = 3*StandardError;
% 计算最大残差法
maxResError = max(abs(A-AveA));
% 计算极差法
RangeError = max(A) - min(A);
% 显示平均误差、Peter法、极限误差、最大残差法、极差
subplot(3, 3, 5);
errorbar([1 2 3 4 5], [AveA AveA AveA AveA AveA], [meanError PeterError limitError maxResError RangeError], 'ro');
str1={['均值：'], [num2str(AveA)], ['平均误差：'], [num2str(meanError)]};
text(1, AveA, str1, 'FontSize', 10);                  % 显示均值及其平均误差
str2={['均值：'], [num2str(AveA)], ['Peter法：'], [num2str(PeterError)]};
text(2, AveA, str2, 'FontSize', 10);                  % 显示均值及其Peter法定义的误差
str3={['均值：'], [num2str(AveA)], ['极限误差：'], [num2str(limitError)]};
text(3, AveA, str3, 'FontSize', 10);                  % 显示均值及其极限误差
str4={['均值：'], [num2str(AveA)], ['最大残差3\sigma：'], [num2str(maxResError)]};
text(4, AveA, str4, 'FontSize', 10);                  % 显示均值及其最大残差
str5={['均值：'], [num2str(AveA)], ['极差法：'], [num2str(RangeError)]};
text(5, AveA, str5, 'FontSize', 10);                  % 显示均值及其极差
xlim([1, 6])
title('平均类（平均误差、Peter法、极限误差、最大残差法）')

% 按大小排列数据sortA,并显示排序后的结果
sortA = sort(A);
subplot(3, 3, 6);
plot(x, sortA, 'ro');
legend('数据排序结果', 'FontSize', 10); 
title('数据排序')

% 排序类（中位值与或然误差、中点值与半级差、三点均值与四分位离差）
% 中值计算
medianA = median(sortA);
% 或然误差计算,若n为奇数，p为居中的一个；若n为偶数，p为居中两个的平均
ProbError = median(sort(abs(A-mean(A))));
% 中点值计算
midA = (sortA(1)+sortA(M))/2;
% 半极差计算
midError = (sortA(M)-sortA(1))/2;
% 三点均值计算
triA = 0.25*sortA(floor(M/4)) + 0.5*sortA(floor(M/2)) + 0.25*sortA(floor(M-M/4));
% 四分位离差
fdError = sortA(floor(M-M/4)) - sortA(floor(M/4)); 
% 显示排序类的中位值与或然误差、中点值与半级差、三点均值与四分位离差
subplot(3, 3, 7);
errorbar([1 2 3], [medianA midA triA], [ProbError midError fdError], 'ro');
str1={['中值：'], [num2str(medianA)], ['或然误差：'], [num2str(ProbError)]};
text(1, medianA, str1, 'FontSize', 10);                  % 显示中值及其或然误差
str2={['中位值：'], [num2str(midA)], ['半极差：'], [num2str(midError)]};
text(2, midA, str2, 'FontSize', 10);                  % 显示中位值及其半极差
str3={['三点均值：'], [num2str(triA)], ['四分位离差：'], [num2str(fdError)]};
text(3, triA, str3, 'FontSize', 10);                  % 显示中位值及其半极差
xlim([1, 4])
title('排序类')

% 截尾类（截尾均值及其标准差、平尾均值及其标准差）
% 满足条件：k=alpha*M，0<alpha≤1/2
alpha = 0.1;
k = alpha*M; 
% 计算截尾均值
trunA = 1 : M-2*k; 
for i = 1 : M-2*k
    trunA(i) = sortA(i+k);
end
trunMean = mean(trunA);
% 计算截尾标准差
trunError = std(trunA, 0);
% 计算平尾均值
aveTailMean = ((M-2*k)*mean(trunA)+k*(trunA(1)+trunA(M-2*k)))/M;
% 计算平尾误差
aveTailError = sqrt(((trunA-trunMean)*(trunA-trunMean)'+k*((trunA(1)-trunMean)^2 ...
    +(trunA(M-2*k)-trunMean)^2))/(M-1));
% 显示截尾类的截尾均值及其标准差、平尾均值及其标准差
subplot(3, 3, 8);
errorbar([1 2], [trunMean AveA], [trunError aveTailError], 'ro');
str1={['截尾均值：'], [num2str(trunMean)], ['截尾标准差：'], [num2str(trunError)]};
text(1, trunMean, str1, 'FontSize', 10);                  % 显示截尾均值及其截尾标准差
str2={['平尾均值：'], [num2str(aveTailMean)], ['平尾标准差：'], [num2str(aveTailError)]};
text(2, aveTailMean, str2, 'FontSize', 10);               % 显示平尾均值及其平尾标准差
xlim([1, 3])
title('截尾类')

% 频数类
% 频数类的众数及其或然误差
% 计算众数
modeCount = max(count20s);
for i = 1: 20
    if count20s(i) == modeCount    cenCount = i;
    end
end
modeCenter = center20s(cenCount); 
% 显示频数类的众数及其或然误差
subplot(3, 3, 9);
errorbar(1, trunMean, trunError, 'ro');
str1={['众数：'], [num2str(modeCenter)], ['或然误差：'], [num2str(ProbError)]};
text(1, trunMean, str1, 'FontSize', 10);                  % 显示截尾均值及其截尾标准差
title('频数类')

